chenxiaochun / blog

🖋️ChenXiaoChun's blog
181 stars 15 forks source link

git常用操作总结 #44

Open chenxiaochun opened 6 years ago

chenxiaochun commented 6 years ago

提交文件到本地仓库

先提交文件到本地暂存盘,然后再提交到本地仓库:

git add ./
git commit

或者只需要一条命令直接搞定:

git commit -am [message]

使用-am参数之前,建议一定要使用git status查看一下你当前文件的修改情况,看是不是所有的文件都需要被 commit,养成这个习惯很重要。因为本来分成两步的事情,可以让你在暂存区中进行一下确认。现在没有了这步确认,所以一定要使用git status查看一下。

此外,git add还可以指定参数来应对特定的情况:

修改最近的一条 commit message

git commit --amend

分支操作

查看分支

合并分支

删除分支

清理分支

仓库地址查看、修改

修改当前项目的远程仓库地址

拉取远程文件时,与本地文件发生了冲突:

这种情况一般发生在本地文件已经做了若干修改,但还没有提交到暂存盘。然后我想拉取一下远程仓库最新文件,结果因为某些文件和远程仓库造成冲突而无法拉取成功。这时你可以使用以下操作:

git stash
git pull origin master
git stash apply

第一步是将你修改过的文件先暂时贮藏起来(注意:和上面提到的暂存盘不是一回事儿),第二步是从远程仓库拉取最新的文件到本地,然后第三步是再将刚才贮藏的文件恢复出来。

三步操作完之后,最新文件已经拉取到本地,但是有可能和本地文件依然存在冲突。但此时你只要去解决每个文件的冲突即可。

推送文件到远程仓库时,发生了冲突:

这种情况一般发生在文件已经提交到本地仓库,但是往远程仓库推送时发生了冲突,可以使用以下操作:

git pull origin master --rebase
git push origin master

先将远程操作仓库的提交记录拉到本地进行衍合,然后再次进行提交即可。

文件版本恢复

恢复当前项目到某一历史版本

先通过git log命令获取要恢复到的版本 hash 值,然后再用git reset恢复。--hard参数表示不会保留现在还未 stage 的修改:

git reset [tree-ish] --hard

--soft参数表示会保留还未 stage 的修改:

git reset [tree-ish] --soft

查看修改历史

修改文件夹/文件名称操作

git 默认情况下对文件名称是大小写不敏感的,例如,如果想将foo修改为Foo,并期望 git 能够识别出来,需要执行两步操作。首先,执行git mv foo tmp,将foo重命名为一个临时文件名;然后再执行git mv tmp Foo,将其命名为最终文件名即可。

git 子模块操作

git 常用设置