git init
:初始化当前目录为一个git仓库,信息记录在隐藏的 .git 文件夹中
git add XX
:将XX文件添加到暂存区
git add .
:将所有待加入暂存区的文件加入暂存区
git commit -m "注释信息"
:(暂存区 -> 本地仓库)
git status
查看修改状态
git config --global user.name xxx
:设置全局用户名,信息记录在 ~/.gitconfig 文件中
git config --global user.email xxx@xxx.com
:设置全局邮箱地址,信息记录在 ~/.gitconfig 文件中
git restore --staged XX
:将文件的修改从暂存区撤出到工作区,暂存区还有文件,会显示暂存区和工作区两文件的变化情况
git rm --cached XX
:会直接从暂存区删除文件,工作区则不做出改变。uncommitted且untracked。不会显示 git diff
的区别
git log
:查看当前分支的所有版本,即从空打印到当前HEAD节点的路径
git log [option]查看提交日志
option:
--all 显示所有分支
--pretty=online 将提交信息显示为一行
--abbrev-commit 使得输出的commitId更简短
--graph 以图的形式显示
1 2 3 4 5 6
| 12. ```markdown git reset git reset git reset git reset
|
git reflog
:查看HEAD指针的移动历史(包括被回滚的版本)
git restore XX
或 git checkout — XX
:将工作区中XX文件尚未加入暂存区的修改全部撤销,不是回滚到上一个版本,而是从工作区回滚到暂存区里存储的版本
git remote add origin git@github.com:Zac-saodiseng/Zac-saodiseng.github.io.git
:将本地仓库关联到远程仓库/推上去
git push origin master
(第一次需要写全,以后只需写 git push
):将本地的某个分支推送到远程仓库(默认创建的都叫 master
分支即主分支)
git clone git@github.com:Zac-saodiseng/Zac-saodiseng.github.io.git
:将远程仓库通过使用SSH克隆将XXX下载到当前目录下(下载下来后 reflog
引用记录没有了,所幸所有 git log
节点都有)
git checkout -b branch_name
:创建并切换到 branch_name 这个分支。比如git checkout -b dev
开了 dev
的分支
git branch
:查看所有分支和当前所处分支
git branch -a
:查看远程分支,以remote
开头且为红色的都是远程分支
git branch branch_name
:创建新分支
git checkout branch_name
:切换到 branch_name
这个分支(注意这只是切换,创建加切换还要加上 -b
)
git merge branch_name
:将分支 branch_name
最新版本合并到当前分支的当前节点上。比如在 master
分支上将 dev
分支上的内容合并到 master
上可以写成:git merge dev
git branch -d branch_name
:删除本地仓库的 branch_name
分支(必须先去其他分支才能删除本分支)
git push -d origin branch_name
:删除远程仓库的 branch_name
分支
git push [-f] [--set-upstream] [远端分支 [本地分支:远程分支]]推送到远程仓库
-f 强制覆盖
若远程分支和本地分支名称相同,可只写本地
git push origin master --set-upstream 推送到远端同时建立关联关系
若已关联 可省略分支名和远端名
1 2 3 4 5 6 7 8 9 10
| 27. ``` 需求背景:Git将本地某一个分支的内容上传到远程不同名分支(本地master分支上传到远程dev分支) 解决方法:这种时候一般可分为两种情况,一种是dev分支在远程已经存在了,我们只需要把本地的内容push上去。另一种是dev分支在远程还没有被创建,我们需要在本地给远程创建dev分支,并把本地内容push上去。下面将分别进行描述。 1. 远程dev分支已经存在: (1)远程分支不一定能在本地被搜索到,当通过命令:$ git branch -a 查看不到远程dev分支时,可以通过命令:$ git fetch 进行刷新,然后再通过 $ git branch -a ,就可以看到远程分支了。 (2)通过命令: $ git branch -u origin/dev 将本地当前分支(目前为master)与远程库origin/dev分支进行关联绑定 (3)通过命令: $ git push --set-upstream origin master 将本地master分支的内容上传到远程dev分支。由于两个分支不同名,--set-upstream 参数不可省略,当然可以通过命令: $ git config --global push.default upstream 将push的默认方式改为upstream,这样以后push时就不用再输入参数--set-upstream 2.远程dev分支还没有创建: 这种情况可以在push的同时创建远程dev分支,并把本地master的内容上传上去。可通过命令:$ git push -u --set-upstream origin master:dev ,表示把本地master分支提交到远程dev分支,第一次运行时加上参数-u,表示把本地master分支与远程dev分支关联起来,效果与 $ git branch -u origin/dev 一样
|
git push -d origin branch_name
:删除远程仓库的branch_name
分支
git push --set-upstream origin branch_name
:设置本地的 branch_name 分支对应远程仓库的 branch_name 分支 push 到远程
git branch --set-upstream-to=origin/dev dev
:将远程的 dev
分支与本地的 dev
分支对应,并拉/下载到本地。和下面一条的区别在于这条要先建立本地dev
分支,且需要merge
。强制删除分支用 git branch -D dev
git checkout -t origin/dev
:在本地只有master
分支,要将dev
也clone
下来,即将远程的dev
分支拉取到本地。
- 补充:Git 2.23 版本之后,
git checkout -t
命令已经被 git switch
命令取代,所以你也可以使用 git switch -t origin/dev
来实现相同的效果
1 2 3 4 5 6
| 总结:
git branch --set-upstream-to=origin/dev dev 用于已经存在的本地分支,只设置跟踪关系。 git checkout -t origin/dev 用于创建并切换到与远程分支对应的本地分支。
两个命令的最终效果是相似的,都是将本地分支与远程分支进行关联,使得在进行 git 或 等操作时, 可以自动与远程分支进行交互。选择使用哪个命令取决于你的具体需求和当前的工作环境。
|
git pull
:将远程仓库的当前分支与本地仓库的当前分支合并
git pull origin branch_name
:将远程仓库的 branch_name
分支与本地仓库的当前分支合并
git stash
:将工作区和暂存区中尚未提交的修改存入栈中
git stash list
:查看栈中所有元素
git stash apply
:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
git stash drop
:删除栈顶存储的修改
git stash pop
:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素