git命令简单使用
- 1. 将代码下载到到本地
- 2. 查看分支是否正确
- 3. 将工作目录中的变更添加到暂存区,为下一次提交做准备
- 4. 提交更改,添加提交信息
- 5. 将本地的提交推送到远程仓库
- 6.从远端仓库拉取分支代码
- 7.查看修改日志
- 8. 解决冲突
1. 将代码下载到到本地
git clone的基本作用是从远程仓库克隆一个副本到本地。
#克隆远程仓库到当前目录(自动创建项目文件夹)
git clone https://github.com/user/repo.git#克隆特定分支(--branch 或 -b)
git clone -b release https://github.com/user/repo.git#浅克隆(仅最新提交历史)
git clone --depth 1 https://github.com/user/repo.git#克隆单一分支(节省空间)
git clone --single-branch -b release https://github.com/user/repo.git
举例:
git clone --depth 1 -b release https://github.com/user/repo.git
2. 查看分支是否正确
git branch
3. 将工作目录中的变更添加到暂存区,为下一次提交做准备
git add
# 添加单个文件
git add README.md# 添加多个文件(支持通配符)
git add *.c *.h# 添加整个目录(递归添加)
git add src/# 添加所有变更(包括新建、修改,但不包括删除)
git add .# 添加所有变更(包括新建、修改和删除)
git add -A
4. 提交更改,添加提交信息
基础提交操作
# 标准提交(需先git add)
git commit -m "修复登录验证逻辑"# 自动暂存所有已跟踪文件的修改并提交
git commit -a -m "优化数据库连接池配置"# 修改最近一次提交(修正拼写/添加文件)
git commit --amend# 提交文件
git commit -F 1.txt
5. 将本地的提交推送到远程仓库
# 推送到默认上游分支(需提前设置跟踪)
git push# 明确指定远程仓库和分支
git push origin main# 推送本地分支到远程同名分支(自动创建)
git push origin feature/login# 强制覆盖远程分支(谨慎使用)
git push --force-with-lease origin main
举例:
git push --force-with-lease origin release
正常情况下,如果这个过程没有其他人提交代码,就会正常推送到远端仓库。
6.从远端仓库拉取分支代码
# 从默认上游分支拉取并合并(等效于 fetch + merge)
git pull# 明确指定远程仓库和分支
git pull origin develop# 拉取并自动变基(避免合并提交)
git pull --rebase origin main# 拉取所有远程分支更新
git pull --all
举例(都是自己经常使用):
git pull --rebase --force-with-lease origin release
7.查看修改日志
# 基础历史查看(带完整信息)
git log#显示当前分支比远程发布分支多出的提交(即本地尚未合并到该远程分支的修改)
git log release..HEAD
会列出在远程分支release-..之后到当前本地 HEAD 之间的提交。
8. 解决冲突
首先,当我执行git push的时候,如果远程仓库已经有了我本地没有的新提交,git会拒绝我的推送,并提示需要先拉取最新的变更。这时候,我需要先将远程的更新合并到本地,解决可能的冲突之后,再重新推送。
那具体应该怎么做呢?可能有两种方法:一种是使用git pull,另一种是先git fetch然后合并或者变基。让我理清这两种方法的区别。git pull实际上是git fetch加上git merge的快捷方式,而如果使用git fetch之后手动合并或者变基,可以更灵活地控制合并过程。
假设我选择使用git pull,这时候git会自动合并远程的修改和本地的提交。如果有冲突的话,git会提示我解决冲突,然后提交合并后的结果。之后,我就可以再次尝试推送了。不过,自动合并可能会产生一个合并提交,有些人可能更倾向于保持线性的提交历史,这时候可能需要使用git pull --rebase,这样可以将我的本地提交变基到远程分支的最新提交之上,避免额外的合并提交。
不过,在使用rebase的时候需要注意,如果我已经将本地提交推送到远程过,那么变基可能会改变提交历史,导致后续推送出现问题。不过在这个场景中,因为我还没有成功推送过,所以使用rebase应该是安全的。
接下来,我应该按照以下步骤操作:
- 先执行git pull --rebase origin 分支名,这样可以将远程的更改拉取下来,并将我的本地提交应用到这些更改之后。
- 如果在rebase过程中出现冲突,需要手动解决冲突,然后使用git add 文件名来标记冲突已解决,接着执行git rebase --continue继续变基过程。
- 完成rebase之后,再次执行git push,这时候应该就能成功推送到远程仓库了。