git 关键词 常用命令

本文详细介绍Git的基本使用方法,包括初始化仓库、克隆仓库、状态检查、文件跟踪、撤销操作、远程仓库使用、打标签、分支管理等内容。适用于初学者快速掌握Git的核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.2

git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"
git log --pretty=format:"%h %s" --graph
 git log --pretty="%h - %s" --author=gitster --since="2008-10-01"  --before="2008-11-01" --no-merges -- t/


2.3

初始化新仓库 git init

从现有仓库克隆  git clone git://github.com/schacon/grit.git
检查当前文件状态 git status
跟踪新文件git add README
忽略某些文件
cat .gitignore
# 此为注释 – 将被 Git 忽略
*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt


2.4  撤消操作
修改最后一次提交  git commit --amend  重新提交:
取消已经暂存的文件git reset HEAD benchmarks.rb 

取消对文件的修改git checkout -- benchmarks.rb


2.5  远程仓库的使用
添加远程仓库 从远程仓库抓取数据 推送数据到远程仓库 
git remote add pb git://github.com/paulboone/ticgit.git
git fetch pb
git push [remote-name] [branch-name]
查看远程仓库信息
它告诉我们,运行 git push 时缺省推送的分支是什么(译注:最后两行)。它还显示了有哪些远端分支还没有同步到本地(译注:第六行的caching 分支),哪些已同步到本地的远端分支在远端服务器上已被删除(译注:Stale tracking branches 下面的两个分支),以及运行git pull 时将自动合并哪些分支(译注:前四行中列出的 issues 和 master 分支)。
 git remote show origin
* remote origin
  URL: git@github.com:defunkt/github.git
  Remote branch merged with 'git pull' while on branch issues
    issues
  Remote branch merged with 'git pull' while on branch master
    master
  New remote branches (next fetch will store in remotes/origin)
    caching
  Stale tracking branches (use 'git remote prune')
    libwalker
    walker2
  Tracked remote branches
    acl
    apiv2
    dashboard2
    issues
    master
    postgres
  Local branch pushed with 'git push'
    master:master


远程仓库的删除和重命名
修改某个远程仓库在本地的简短名称  git remote rename pb paul
注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支现在成了 paul/master。
碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令:
git remote rm paul




2.6  打标签
列显已有的标签 git tag
新建标签  git tag -a v1.4 -m 'my version 1.4'  -m 选项则指定了对应的标签说明 用 -a  指定标签名字
查看相应标签的版本信息 git show v1.4


签署标签 git tag -s v1.5 -m 'my signed 1.5 tag' 现在再运行git show v1.5会看到对应的 GPG 签名也附在其内:
验证签署标签  git tag -v [tag-name]  需要有签署者的公钥,存放在 keyring 中,才能验证
后期加注标签  git log --pretty=oneline   git tag -a v1.2 9fceb02
分享标签 git push origin [tagname]  或者 git push origin --tags


3.2  分支的新建与合并
分支的新建与切换git branch iss53 ;git checkout iss53或者git checkout -b iss53  
删除分支git branch -d iss53
分支的合并 git merge iss53
遇到冲突时的分支合并 
如果在不同的分支中都修改了同一个文件的同一部分,Git 作了合并,但没有提交,它会停下来等你解决冲突
确认所有冲突都已解决,也就是进入了暂存区,就可以用 git commit 来完成这次合并提交
图形界面的工具来解决这些问题,不妨运行git mergetool


3.3  分支的管理
git branch --merge 查看哪些分支已被并入当前分支
 git branch --no-merged 查看尚未合并的工作:


3.5  远程分支


推送本地分支 git push origin serverfix
本地分支推送到某个命名不同的远程分支:若想把远程分支叫作awesomebranch,可以用 git push origin serverfix:awesomebranch 当你的协作者再次从服务器上获取数据时,他们将得到一个新的远程分支 origin/serverfix


值得注意的是,在 fetch 操作下载好新的远程分支之后,你仍然无法在本地编辑该远程仓库中的分支。换句话说,在本例中,你不会有一个新的serverfix 分支,有的只是一个你无法移动的 origin/serverfix 指针,如果要把该内容合并到当前分支,可以运行 git merge origin/serverfix。如果想要一份自己的 serverfix 来开发,可以在远程分支的基础上分化出一个新的分支来:git checkout -b serverfix origin/serverfix


跟踪远程分支
从远程分支 checkout 出来的本地分支,称为_跟踪分支(tracking branch)_
跟踪分支是一种和远程分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。反过来,在这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来


在克隆仓库时,Git 通常会自动创建一个名为 master 的分支来跟踪 origin/master。这正是git push 和 git pull 一开始就能正常工作的原因。当然,你可以随心所欲地设定为其它跟踪分支,比如origin 上除了 master 之外的其它分支。刚才我们已经看到了这样的一个例子:git checkout -b [分支名] [远程名]/[分支名]。还可以用--track 选项简化:git checkout --track origin/serverfix 
要为本地分支设定不同于远程分支的名字,只需在前个版本的命令里换个名字:git checkout -b sf origin/serverfix


删除远程分支
如果想在服务器上删除serverfix 分支,运行下面的命令: git push origin :serverfix


3.6  分支的衍合
相对于merge,它的原理是回到两个分支最近的共同祖先,根据当前分支(也就是要进行衍合的分支 experiment)后续的历次提交对象(这里只有一个 C3),生成一系列文件补丁,然后以基底分支(也就是主干分支master)最后一个提交对象(C4)为新的出发点,逐个应用之前准备好的补丁文件,最后会生成一个新的合并提交对象(C3’),从而改写 experiment 的提交历史,使它成为 master 分支的直接下游
git checkout experiment
git rebase master
git merge experiment


衍合的风险

一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。


3.7 Git reset 
库的逆转与恢复除了用来进行一些废弃的研发代码的重置外,还有一个重要的作用。比如我们从远程clone了一个代码库,在本地开发后,准备提交回远程。但是本地代码库在开发时,有功能性的commit,也有出于备份目的的commit等等。总之,commit的日志中有大量无用log,我们并不想把这些 log在提交回远程时也提交到库中。 因此,就要用到git reset。 
       git reset的概念比较复杂。它的命令形式:git reset [--mixed | --soft | --hard] [<commit-ish>] 
命令的选项: 
       --mixed 这个是默认的选项。如git reset [--mixed] dev^(dev^的定义可以参见2.6.5)。它的作用仅是重置分支状态到dev1^, 但是却不改变任何工作文件的内容。即,从dev1^到dev1的所有文件变化都保留了,但是dev1^到dev1之间的所有commit日志都被清除了, 而且,发生变化的文件内容也没有通过git add标识,如果您要重新commit,还需要对变化的文件做一次git add。 这样,commit后,就得到了一份非常干净的提交记录。 (回退了index和仓库中的内容) 
       --soft相当于做了git reset –mixed,后,又对变化的文件做了git add。如果用了该选项, 就可以直接commit了。(回退了仓库中的内容) 
       --hard这个命令就会导致所有信息的回退, 包括文件内容。 一般只有在重置废弃代码时,才用它。 执行后,文件内容也无法恢复回来了。(回退了工作目录、index和仓库中的内容) 
例如: 
切换到使用的分支上; 
       git reset HEAD^ 回退第一个记录 
       git reset HEAD~2 回退第二个记录 
如果想把工作目录下的文件也回退,则使用git reset - - hard HEAD^ 回退第一个记录 
       git reset - - hard HEAD~2 回退第二个记录 
还可以使用如下方法: 
将当前的工作目录完全回滚到指定的版本号,假设如下图,我们有A-G五次提交的版本,其中C的版本号是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我们执行了'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么结果就只剩下了A-C三个提交的版本


3.8 Git revert 
还原某次对版本的修改,例如:git revert commit_id (其中commit_id为commit代码时生成的一个唯一表示的字符串) 


### Git Log 常用命令及其使用方法 #### 简洁格式查看提交历史 为了以更简洁的方式查看所有的提交历史,可以使用`--oneline`选项。这会将每次提交的信息压缩成一行显示。 ```bash git log --oneline ``` 此命令能够快速浏览大量的提交记录而不会显得杂乱无章[^1]。 #### 图形化展示分支关系 当项目中有多个并行开发的分支时,可以通过加入`--graph`参数来获得带有简单图形表示的历史视图,帮助理解不同分支之间的合并情况。 ```bash git log --oneline --graph --all ``` 上述指令不仅限于当前分支,而是涵盖了仓库内所有存在的分支信息。 #### 查看具体更改详情 对于想要深入了解某几次特定提交所引入的具体变化,则可利用`-p`标志加上数量限制(`-n`)一起工作: ```bash git log -p -n 10 ``` 这条语句返回最新的十条提交里每一项对应的完整差异对比。 #### 单条提交细节分析 如果只关心最近的一次更新带来了什么改变,那么下面这个组合就非常有用处了: ```bash git log --patch -1 ``` 它等价于`git log -p -1`,专门用于检索单独最新一次提交的内容变动。 #### 统计修改过的文件数目以及每文件内的增删行数 有时除了知道有哪些地方被改过之外,还想知道这些改动影响了多少个源码文档,这时就可以借助`--stat`开关来做这件事: ```bash git log --stat -1 ``` 该操作有助于评估单个提交的影响范围大小。 #### 自定义日志输出样式 Git允许用户通过指定特殊的格式字符串来自由调整log呈现的形式,比如仅提取哈希值、作者名字、相对时间戳和主题摘要字段拼接在一起作为新的布局方案: ```bash git log --pretty=format:"%h - %an, %ar : %s" ``` 这种方式非常适合用来创建个性化的报告或是与其他工具集成时的数据交换需求。 #### 关键词过滤查询 最后,在海量的日志数据面前,直接定位到含有某些特征字样的记录无疑能极大提高效率。为此提供了`--grep`功能来进行精确匹配搜索: ```bash git log --grep="关键字" ``` 输入感兴趣的词语即可筛选出符合条件的结果集[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值