Git 常用命令 与 常见场景

Git常用命令

克隆到本地

git clone https://github.com/tomoyachen/helloflask.git

查看分支列表与当前所在分支

git branch

检出 切换分支到xxx分支

git checkout xxx

添加目录内新文件到版本管理列表

# .可以提交未跟踪和修改文件,但是不处理删除文件
# 只能够提交当前目录或者它后代目录下相应文件
git add .

# all可以提交未跟踪、修改和删除文件
# all无论在哪个目录执行都会提交相应文件
git add all

拉取本地不存在的远端分支

git checkout -b 本地分支名 origin/远程分支名

提交到本地仓库

git commit -m "fix(): 更新内容提交说明"

推送到远端

#第一次
git push origin master

#绑定远端与分支后
git push

fetch 拉取到本地 不自动megre

#第一次
git fetch origin master

#绑定远端与分支后
git fetch

pull 拉取到本地 自动megre

#第一次
git pull origin master

#绑定远端与分支后
git pull

把xxx分支合并到当前分支

git megre xxx

新建一个名为xxx的分支(从当前分支克隆)

#新建,但不切换
git branch xxx

#新建,并切换到此分支
git checkout -b xxx

删除 xxx分支

git branch -d xxx

查看Git日志

git log

回滚到某次提交

git log信息如下
commit 796e93b680f31d7762b7760363f624a366d374f1 (origin/master, origin/HEAD)

#慎重 !不可逆操作
git reset --hard 796e93b680f31d7762b7760363f624a366d374f1 

#慎重!不可逆操作
git checkout 796e93b680f31d7762b7760363f624a366d374f1 

常见场景

同时两方修改同一文件, 自动merge

A用户

新加了个def a()函数

git add .
git commit -m "Updates by A"
git push

B用户

新加了个def b()函数(代码无冲突)

git add .
git comiit -m "Updates by B"
git pull

git 自动merge

同时两方修改同一文件, 手动merge

A用户

修改了a()函数里的内容

git add .
git commit -m "Updates by A"
git push

B用户

也修改了a()函数里的内容(代码有冲突)

git add .
git comiit -m "Updates by B"
git pull

合并失败,提示:

Auto-merging demos/watchlist/app.py
CONFLICT (content): Merge conflict in demos/watchlist/app.py
Automatic merge failed; fix conflicts and then commit the result.


最终需要手动merge,解决冲突

<<<HEAD 到 === 是你本地内容

=== 到 >>> 36c…a6c 是远端拉取的内容

手动修改代码为期望功能后保存提交即可,手动merge容易出错,一定要告知测试进行测试。

def a():
<<<<<<< HEAD
    a = 10
    b = 20
    c = a - b
=======
    a = 1
    b = 2
    c = 1+2
>>>>>>> 36c10d1ad12723d54f8ef6711b065d4a90330a6c
    pass

存入暂存区/ 读取

# ref: https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html
# 存入
git stash

# 读取最近一个
git stash pop

拉取时 使用rebase 代替 merge

# ref: https://www.jianshu.com/p/dc367c8dca8e
git pull --rebase

# 可以保证你的commit不混乱的情况下,其他代码是 master 最新的
git pull --rebase origin master

合并多次提交

# 查看 commit 日志
git log

# 变基
git rebase -i ac5caf

# 修改 commit 信息
# reword 重新编辑 commit msg
# squash 向前合并 commit,进入编辑 msg 模式
# fixup 向前合并 commit,跳过编辑 msg

# 如果合并的 commit 已经推送至远端了
# 那么下次推送需要强制推送,此动作很危险必须保证是在你个人分支上
# 如果有其他人和你一起使用同一分支,请谨慎操作
git push origin branchname -f

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值