GIT 常用命令

A.换工作之后开始使用GIT
 半年前我开始使用git,之前一直在用svn。 git命令很多,看起来很复杂,但在最开始的时候了解几个简单的就够用了。
相信很多人在使用git之前都使用过svn,这里不讨论git和svn的不同,也不对这两个代码管理软件进行比较和评论,只是在我个人使用的角度做的一些记录。
  • svn
    • 需要搭建一个svn服务器(HTTP/SVN),搭建svn服务器需要看一些手册
  • git
    • 不需要git服务器,任何一台安装git的PC都可以是git服务器,其他人可以用任何现有的方式(SSH/HTTP/本地文件系统)更新上传代码
我有两台PC:A和B,他们在一个网段(192.168.6.0/24),为了使得这个git使用记录更加严谨,以下的每一个命令都在这两台PC上进行测试。其中A地址为192.168.6.1, B地址为192.168.6.15, B可以通过ssh登录到A

1.初始化一个A机器上的git目录
最近在开始学习scala,在A机器上有一个目录是/home/le/workspace/scala_test,在这个目录下初始话一个git目录

$ git init

此时你在当前目录下会发现一个.git的目录
$ ls -la

2.向git库中提交文件

$ touch Test1.scala
$ vim Test1.scala
$ git status . #git会告诉你新的改动,接下来选择需要提交的文件

$ git add Test1.scala
$ git status . #再来看看,git会告诉你将要commit什么
$ git commit -m 'initial git repo' #提交到本地branch

A可以作为git server了,接下来到B上操作。

2. 从A上克隆代码到B上,位于 /home/le/workspace/git/repo1/

3. 创建分支,切换分支,提交分支到远程git库
$ git branch scala_dev        #创建分支
$ git checkout scala_dev     #切换到该分支
$ git branch                         #查看本地当前的分支
$ git push origin scala_dev  #提交scala_dev分支到远程git库
$ git branch -r                      #查看远程所有的分支
$ git branch -a                      #查看本地和远程所有的分支

4.修改文件,并且提交到远程库

$ touch Test2.scala
$ git add Test2.scala
$ git commit

$ git log #在push之前确认commit是否正确
$ git push

5.从远程git库克隆指定的分支,这次在B机器的/home/le/workspace/git/repo2/目录重新克隆一份代码

$ git clone -b scala_dev le@192.168.6.1:/home/le/workspace/scala_test

$ git branch  #查看当前分支

#提交新的代码

$ touch Test3.scala
$ git add Test3.scala
$ git commit 

$ git log #在push之前确认commit是否正确

$ git push

6.回到/home/le/workspace/git/repo2/更新代码

$ git pull #如果有错误,请按照错误提示修改.git/config文件



B.一些可能会遇到的问题
1.合并多个commit多一个commit
在本地的git库commit了多次,在push到远程的git库时,可以在本地合并这些commit。
  • 每次合并两个commit

$ git reset --soft HEAD^1

$ git commit --amend

  • 合并最后n个commit

$ git rebase -i HEAD~n

#替换第n个pick为s保存

 

2.取消本地的commit

有时候commit了代码到了本地git库中,之后某种原因想删掉最后1条commit,可以直接恢复到之前的commit

$git reset --hard HEAD~1

 

3.使用git stash

如果你跟我一样也使用gerrit做code review,那么有可能遇到这样问题:

  • 在同一个分支上有多个bug需要fix,fix完一个bug然后就commit代码到gerrit server上等待code review,在等待的过程中又开始fix另外一个bug,就在这个时候之前提交的代码被reviewer提示出错误,需要更新之前的代码,这个时候可以 使用git stash来保存当前本地的修改。
  • 在一个分支上修改了代码但是不想commit到本地git库,需要切换一个分支去修改代码,这个时候也可以使用git stash

$ git stash

# modify your code or checkout to another branch

# git commit --amend

$ git stash pop

 

4.从另外一个分支里面挑选一些commit到当前分支

假如你有两个分支,一个是dev分支,一个是release分支,在dev分支上已经有很了很多的commit,有时需要从dev分支上挑选一些commit到release分支上。

$ git log #查找到需要的commit id, 假设为5b531cb8c62cdb8b5f10c406e41824a6388e3a82

$ git checkout release

$ git log #看一下当前的commit log

git cherry-pick 5b531cb8c62cdb8b5f10c406e41824a6388e3a82

$ git log #此时可以看到commit log增加了

 

5. 出现error: The following untracked working tree files would be overwritten by checkout 
$ git clean -d -fx ""

 

6.我一次commit 5个文件到gerrit上面,然后发现有一个不需要提交,只要提交4个就好,我想重新提交一次在同一个commit ID下面,我该怎么做?

前提代码还没有被merge进库

例如要取消文件2.txt, 那么先恢复2.txt到commit id 9a42e8e3f41dcf5029a11ce651f36cbdf37fc84d,你提交之前的那一个commit id

git reset 9a42e8e3f41dcf5029a11ce651f36cbdf37fc84d -- 2.txt
git checkout -- 2.txt
git add .
git commit --amend

<think>我们被要求生成一个关于Git常用命令的汇总列表。根据用户的要求,我们需要提供结构清晰的回答,并尽量保证真实可靠。同时,我们参考了站内引用中提供的Git命令信息。根据引用内容,我们可以整理出以下常用命令:1.基本操作(初始化、添加、提交等)2.分支管理3.远程仓库操作4.标签管理5.历史查看与撤销6.其他实用命令(如删除大文件、清理仓库等)我们将按照这些类别来组织命令。注意:由于引用中提供了一些特定问题的解决方案(如删除大文件),我们也会将其作为实用命令的一部分。另外,注意用户要求使用中文回答,并且行内数学表达式使用$...$格式(但本问题不涉及数学表达式,所以忽略),独立公式使用$$...$$格式(同样不涉及)。同时,在回答末尾生成相关问题。我们开始整理Git常用命令汇总:</think>### Git常用命令汇总 以下是Git常用命令分类整理,帮助您高效管理代码版本: #### 1. 仓库初始化与基础操作 ```bash # 初始化新仓库 $ git init # 克隆远程仓库 $ git clone <远程仓库URL> # 查看当前状态 $ git status # 添加文件到暂存区 $ git add <文件名> # 添加单个文件 $ git add . # 添加所有修改 # 提交更改 $ git commit -m "提交说明" ``` #### 2. 分支管理 ```bash # 创建分支 $ git branch <新分支名> # 切换分支 $ git checkout <分支名> $ git switch <分支名> # Git 2.23+推荐方式 # 创建并切换分支 $ git checkout -b <新分支名> $ git switch -c <新分支名> # 合并分支 $ git merge <要合并的分支名> # 删除分支 $ git branch -d <分支名> # 安全删除 $ git branch -D <分支名> # 强制删除未合并分支 ``` #### 3. 远程仓库操作 ```bash # 添加远程仓库 $ git remote add origin <远程仓库URL> # 查看远程仓库 $ git remote -v # 推送到远程仓库 $ git push -u origin <分支名> # 首次推送 $ git push # 后续推送 # 拉取远程更新 $ git pull origin <分支名> $ git pull --rebase origin <分支名> # 变基式拉取 # 删除远程连接 $ git remote rm origin ``` #### 4. 版本回退与撤销 ```bash # 查看提交历史 $ git log $ git log --oneline # 简洁版日志 # 撤销工作区修改 $ git checkout -- <文件名> # 撤销暂存区文件 $ git reset HEAD <文件名> # 版本回退 $ git reset --hard <commit_id> # 彻底回退 $ git reset --soft <commit_id> # 保留修改 # 恢复删除的文件 $ git restore <文件名> # Git 2.23+ ``` #### 5. 标签管理 ```bash # 查看标签 $ git tag # 创建标签 $ git tag <标签名> # 轻量标签 $ git tag -a v1.0 -m "版本说明" # 附注标签 # 推送标签 $ git push origin <标签名> # 删除标签 $ git tag -d <标签名> # 本地删除 $ git push origin :refs/tags/<标签名> # 远程删除 ``` #### 6. 高级维护 ```bash # 清理历史大文件 $ git filter-branch --force --index-filter \ &#39;git rm -rf --cached --ignore-unmatch <文件名>&#39; \ --prune-empty --tag-name-filter cat -- --all # 回收存储空间 $ git reflog expire --expire=now --all $ git gc --prune=now # 查看仓库大小 $ git count-objects -vH ``` #### 7. 配置相关 ```bash # 设置用户名/邮箱 $ git config --global user.name "用户名" $ git config --global user.email "邮箱" # 查看配置 $ git config --list # 设置默认编辑器 $ git config --global core.editor vim ``` > **最佳实践提示**: > 1. 频繁提交小变更,保持提交记录清晰 > 2. 使用`.gitignore`文件排除无需版本控制的文件 > 3. 重要分支(如main/prod)设置保护规则 > 4. 推送前先执行`git pull --rebase`避免合并提交
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值