您的位置:首页 > 其它

git的常用命令

2017-07-14 08:27 218 查看

如何提交代码到远程库

代码提交一般有五个步骤:
1. 查看目前代码的修改状态
提交代码之前,首先应该检查目前所做的修改,运行
git status
命令

已暂存 (Changes to be committed)



已修改 (Changes not staged for commit)


未跟踪 (Untracked files)



2.查看代码修改内容


git diff <file>



比较某文件与最近提交节点的差异。
注意:如果该文件已暂存,那么应该使用
git diff –cached <file>


还可以比较某文件在commit_id1,commit_id2的差异。


git diff <commit_id1> <commit_id2> <file>



如果省略后面commit_id2,则默认表示与上一提交commit_id比较

3.暂存需要提交的文件
如果是新建或者修改的文件


git add <file>



如果是删除的文件


git rm <file>



4.提交已暂存的文件


git commit -m "first commit"


5.同步到配置库服务器
同步到服务器前, 先需要将服务器代码同步到本地


git pull origin master


如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。


git push origin HEAD:master


git中的三种状态以及它们之间的转换

命令示例:


git reset --hard origin master 或者 git reset --hard HEAD
git status -s


目前你或许已经了解,git中的文件可以有三种不同的状态:

没有暂存

暂存并准备提交

已经提交

通过运行
git status
可以看到关于文件的描述以及文件的状态。
运行
git add <file>
命令可以将文件从未暂存状态移动到暂存并准备提交的状态, 或者使用
git add .
命令一次性暂存所有的文件。

通过运行
git status -s
命令可以看到状态图,其中
-s
是简短(short)的意思(个人认为),最终输出结果如图所示:



显然,
git status
不显示已经提交了的文件,你可以使用
git log
命令来查看。

日志输出参数

命令示例:


git log --oneline --graph


下面是经常使用的参数

选项含义
--author="fireway"只显示某个用户的提交任务
--name-only只显示变更文件的名称
--oneline将提交信息压缩到一行显示
--graph显示所有提交的依赖树
--reverse按照逆序显示提交记录(最先提交的在最前面)
--after显示某个日期之后发生的提交
--before显示发生某个日期之前的提交
例如,要求在每周五提交周报, 所以我每周五都运行一下这个指令:


git log --author="fireway" --after="1 week ago" --oneline


帮助命令:


man git log


如果这些都不好用,git还有一个--pretty 参数,可以用来创建高级自定义输出。

查看文件的详细变更

命令示例:


git -log -p <file>



不仅显示提交说明、提交者以及提交日期,还会显示这每次提交实际修改的内容。

然后你就可以使用Vim中常用的检索技巧来查找关键字

查看文件中指定位置的变更

命令示例:


git log -L 1,1:<file>



你可以使用
git blame <file>
追查出文件中每一行是由谁变更的,但是这个命令无法提供足够的信息。
git log 提供了一个 -L 的选项。这个选项允许指定文件中的某些行。git只会输出与这些行的变更日志,这有点像带焦点的 git log -p 。

查看尚未合并的变更

命令示例:


git log --no-merges master..


--no-merges 标志意味着只显示没有合并到任何分支的变更。
master..选项,意思是指显示没有合并到master分支的变更(在master后面必须有..)。

查看其他分支中的文件

命令示例:


git show <branch>:<file>



用这个命令可以很方便地查看其他分支上的文件而无需切换到那个分支。
如果你想查看另一个分支上文件与当前分支上文件的差异,只要运行下面的命令就可以了:


git diff <branch> <file>



修复而非新建提交

命令示例:


git commit --amend


假设提交之后,你意识到自己犯了一个拼写错误。你可以重新提交一次,并附上描述你的错误的提交信息。
如果提交尚未推送到远程分支,那么按照下面步骤简单操作一下就可以了:

修复你的拼写错误

将修正过的文件暂存,通过
git add <file>


运行 git commit --amend 命令,将会把最近一次的变更追加到你最新的提交。同时也会给你一个编辑提交信息的机会。

准备好之后,将干净的分支推送到远程分支。

重置文件

重置是让文件回到git历史中的一个特定版本。
在git中,有3种类型的重置。

命令说明
git reset --hard commit_id
回退到一个特定的历史版本。
丢弃这次提交之后的所有变更。
git reset commit_id
回滚到一个特定的历史版本。
将这个版本之后的所有变更移动到“未暂存”的阶段。这也就意味着你需要运行
git add .
git commit -m ""
才能把这些变更提交到仓库。
git reset --soft commit_id
回滚到一个特定的历史版本。
将这次提交之后所有的变更移动到暂存并准备提交阶段。意味着你只需要运行
git commit -m ""
就可以把这些变更提交到仓库。
如果想清除变更记录,可以使用清理命令:


git reset --hard HEAD


签出部分文件

如果你想取消某些文件在本地的变更,而同时保留另外一些文件在本地的变更,一个比较简单的方法是通过
git checkout <file>
签出那些你想取消本地的变更的文件。

正如前面提到的那样,你也可以从其他分支签出文件的不同版本。


git checkout <branch> <file>



或者之前的commid_id中签出


git checkout <commit_id> <file>



你应该注意到了签出的文件处于“暂存并准备提交”的状态。
如果想回到未暂存的状态,需要执行一下
git reset HEAD <file>
。然后再次执行
git checkout <file>
, 文件回到了初始状态。

撤销而不产生提交信息

命令示例:


git revert -n


如果打算撤销之前一次或者两次的提交,查看这些提交都做了哪些变更,哪些变更又有可能引发问题,这个命令非常方便。
通常,git revert 会自动将回退的文件提交到仓库,需要你写一个新的提交信息。
-n 标志告诉git先别急着提交,因为我只是想看一眼罢了。

参考

日常使用 Git 的 19 个建议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: