Git 常用命令

git

配置

  • 显示配置

    git config --list
  • 修改配置

    # git config [config_name] [config_value] 
    # 修改全局则加 --global
    # 删除配置用 --unset
    # eg:
    git config user.email "email@example.com"
    git config --global user.name "firstname lastname" 
  • 修改密码

    # 添加密码,全局则加 --global 
    git config --add user.password "new_password" 
    # 删除密码
    git config --unset user.password  
    # 有时候每次都要求输入密码,可以输入以下命令,然后重新输入密码,之后就能保存到本地了:
    git config --global credential.helper store
  • .gitignore
    指定应该忽略哪些文件,如果你添加.gitignore的时候,git里面已经上传了很多不需要的文件,则使用下面两个命令干掉他们

    # 文件夹
    git rm -r --cached [文件夹名]
    # 文件
    git rm --cached [文件名]

创建仓库

如果远程仓库还没有初始化,则先创建本地仓库,然后推送到远程仓库,如果远程仓库已经初始化了,则使用clone方法。

# 进入指定文件夹后初始化本地仓库
git init
# 先提交本地修改,可以使用 git add, git commit 命令
# 关联到远程仓库
 git remote add origin [仓库地址]
# 提交到远程仓库
git push -u origin master

移动仓库

# 修改远程地址
git remote set-url origin [新的仓库地址]
# 提交
git push -u origin master
# 如果想覆盖新仓库,则需使用 --force
git push --force

克隆仓库

# 在当前目录克隆远程仓库,并创建文件夹,文件夹名字为仓库的名字。
git clone [git地址]
# 在当前目录克隆远程仓库,并指定本地文件夹名称
git clone [git地址] [指定本地文件夹名称]
# 使用用户名密码克隆
git clone https://username:password@gitee.com/xxxx.git
# 可选参数
# --branch 克隆指定的分支
# --recursive 递归克隆所有子仓库

暂存/取消暂存

# 添加所有文件到暂存区
git add .
# 添加指定的文件或者文件夹,支持多选
git add [文件1] [文件2] [文件夹1] [文件夹2] .....
# 撤销暂存的文件或者文件夹,同git add命令一样支持多个文件和文件夹
git restore -staged [文件或者文件夹]

提交/取消提交

提交时必须输入备注,提交之后commit之后会生成一个commit id,可以通过git log命令查看。

# 提交暂存区的所有文件到本地仓库
git commit --message [备注]
# 提交本地所有修改,此操作不需要暂存
git commit --all --message [备注]
# 撤销最近的提交,保留修改过的内容,修改过的内容会进入暂存区
git reset --soft HEAD^ 
# 撤销最近的提交,同时撤销所有修改的内容, 该操作会丢失修改过的内容
git reset --hard HEAD^ 
# 撤销到指定的commit,同样可以指定 --soft 或者 --hard
git reset --hard [commitid]
# 获取指定commit的版本
git checkout [commitid]
# 撤销一个或多个commit,此操作相当于反向修改,会生成一个新的commit
git revert [commitid]

注意git reset尽量只用于本地仓库,因为如果commit已经提交到了服务器,再通过git reset撤销,相当于切到了之前的版本,此时push就会失败,必须加上 –force 参数强行覆盖远程仓库,除此之外,如果有其它用户也克隆了该仓库,并且他的版本比你reset之后的新,当其push的时候,又会覆盖掉你reset之后的版本,同样他也无法pull,只能重新克隆

拉取/推送

# 获取远程仓库的修改
git pull
# 获取远程的修改,将当前未push的commit放到最后面
git pull --rebase
# 推送本地的commit到远程仓库
git push
# 强行推送本地版本到远程仓库,此方法适合本地撤销了一些操作后需要覆盖服务器版本的操作
git push -f

分支

# 查看所有分支
git branch -a
# 以当前分支为基础创建新分支
git branch [分支名称]
# 切换到指定分支,注意切换分区之前应确保本地没有未提交的修改
git checkout [分支名称]
# 创建并切换到新分支,等同于先执行 git branch [分支名称], 再执行 git checkout [分支名称]
git checkout -b [分支名称]
# 删除本地分支,注意不能删除当前分区
git branch -d [分支名称]
# 删除远程分支
git push origin -d [分支名称]
# 推送新建的分支到远程仓库
git push -u origin [分支名称]
# 重命名分支
git branch -m [旧分支名称] [新分支名称]
# 从指定commit创建分支
git checkout -b [分支名称] [commitid]
# 从指定标签创建分支
git checkout -b [分支名称] [tagname]
# 合并指定分支的修改到当前分支
git merge [分支名称]
# 将当前分支变基, 比如当前分支是从master的commit1拉取的,工作一段时间后master产生了新的commit,此时在当前分支执行变基操作,就能将master的commit1之后的变更合并过来。
git rebase [源分支,例如:master]
# 变基解决冲突后先执行add添加修改,然后使用continue,不会产生新的commit
git add .
git rebase --continue

merge 和 rebase都会合并代码,不同的是rebase会将当前分支的commit放到源分支的最后面,这样使得签入历史更干净,但是个人觉得在多人协作的分支下,rebase也会带来一系列的合并和提交冲突的问题。

标签 tag

标签跟分支类似,都可以用来标记一个独立的版本,但标签一般不建议修改,而且有些命令跟分支的一样,所以标签名字最好不要跟分支名字一样。

# 基于当前分支最新的commit创建标签
git tag [tagname]
# 基于某个commit创建标签
git tag [tagname] [commitid]
# 显示所有标签
git tag
# 删除本地标签
git tag -d [tagname]
# 删除远程标签
git push origin -d [tagname]
# 推送所有标签
git push origin --tags
# 推送单个标签
git push origin [tagname]
# 获取指定标签的版本
git checkout [tagname]

Related Posts

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注