git 学习笔记

来源:互联网 发布:王者荣耀修复资源数据 编辑:程序博客网 时间:2024/06/15 10:48

git 学习笔记

最近从 svn 转到 git。这两个版本控制系统区别蛮大的,还是有点不适用。做个笔记,记录 git 的各种常用操作。算是给自己做个备忘。

git 使用前的配置

首先要设置自己的用户名和邮箱名。

    git config --global user.name "your name"    git config --global user.email "your email address"

然后最好再设置一下提交 comment 时用的文本编辑器。(默认是 vi)

    git config --global core.editor "notepad++.exe"  # 我习惯用 notepad++ , 大家可以根据自己的习惯设置合适的编辑器。

让 git 输出的文字显示不同的颜色。

    git config --global color.status auto      git config --global color.diff auto      git config --global color.branch auto      git config --global color.interactive auto  

查看各种配置情况:

    git config --list

生成 ssh 公钥

这项操作其实和 git 无关,属于是 ssh 的配置了。不过 git 会用到 ssh 来传输数据。所以还是需要配置一下。

    ssh-keygen -t rsa -C “您的邮箱地址”    cd ~/.ssh  # 这时会生成这个目录,公钥就放在这个目录里。    ls # 这时会看到 这两个文件:id_rsa  id_rsa.pub,id_rsa.pub 就是公钥

生成一个代码仓库

生成一个代码仓库有两种方式,自己建一个或者从远程仓库中克隆一个。

    git init # 在当前目录中生成一个代码仓库    git clone url # 克隆一个代码仓库到本地    git clone url path # 克隆一个代码仓库到本地,放在 path 目录中。

文件操作

    git add path # 添加文件或目录到代码仓库    git rm path # 从代码仓库和工作目录中删除文件或目录    git rm --cached path # 从代码仓库删除文件或目录,本地还保留    git mv path destination # 文件改名    git checkout [rev] file # 签出某一个版本的文件。如果不加 rev 则签出最新的。

working tree 相关的操作

    git status # 显示当前工作目录的状态    git add path # 将文件暂存    git commit # 将暂存的文件提交到版本库中。    git commit -a # 将所有修改后的文件都提交到版本库中。    git commit --amend # 撤销最近一次提交操作。    git reset HEAD <file> # 撤销对 file 的暂存。    git checkout -- <file> # 将 file 恢复到版本库中的样子。(丢弃对 file 的修改)    git checkout -- # 将所有文件恢复到版本库中的样子。    git clean # 将工作目录中非版本控制的文件删除

比较文件的差异

    git diff # 当前文件和暂存区域快照之间的差异。    git diff --cached # 暂存起来的文件和上次提交时的快照之间的差异。    git diff --staged # 暂存起来的文件和上次提交时的快照之间的差异,与 git diff --cached 相同。

忽略某些文件

有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。下面是一个 .gitignore 的例子。

    # 忽略所有 .a 结尾的文件    *.a    # 但 lib.a 除外    !lib.a    # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO    /TODO    # 忽略 build/ 目录下的所有文件    build/    # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt    doc/*.txt

本地分支

    git branch branch_name # 建立一个名为 branch_name 的分支    git checkout branch_name # 将工作目录切换到 branch_name 分支的最新版    git checkout -b branch_name # 新建一个名为 branch_name 的分支,并将工作目录切换到 branch_name 分支(HEAD 指向 branch)    git branch -d branch_name # 删除分支 branch_name    git branch -D branch_name # 强制删除分支 branch_name    git branch # 显示所有本地的分支    git branch -v # 查看各分支最近一次提交对象的信息    git branch --merge # 查看那些分支是当前分支的直接上游    git branch --no-merged # 查看那些分支尚未尚未合并到当前分支    git branch -f branch rev # 用 rev 覆盖当前分支    git merge branch_name # 合并分支,将 branch_name 和当前分支合并

远程仓库的操作

    git clone url # 克隆一个代码仓库到本地    git clone url path # 克隆一个代码仓库到本地,放在 path 目录中。    git remote -v # 显示远程仓库的信息    git remote add [shortname] [url] # 添加一个新的远程仓库,并给远程仓库指定一个 shortname    git fetch [remote-name]# 从远程仓库抓取数据到本地.    git pull [remote-name] # 从远程仓库抓取数据到本地,然后将远端分支自动合并到本地仓库中当前分支。    git push repository_name local_branch_name: remote_branch_name # 将本地的分支 local_branch_name 推送到远程仓库,成为名为 remote_branch_name 的远程分支    git push repository_name local_branch_name # 将本地的分支 local_branch_name 推送到远程仓库,建立一个同名的分支    git merge repository_name/remote_branch_name # 将远程分支 remote_branch_name 合并到本地的当前分支上。    git checkout -b local_branch_name repository_name/remote_branch_name # 建立一个本地分支 local_branch_name,与远程分支 remote_branch_name 关联。    git checkout --track repository_name/remote_branch_name # 建立一个同名的本地分支 remote_branch_name,与远程分支 remote_branch_name 关联。    git push repository_name :remote_branch_name # 删除远程分支 remote_branch_name    git remote show [remote-name] # 查看远程仓库 remote-name 的详细信息    git remote rename oldname newname# 将远程仓库 oldname 改名为 newname    git remote rm name # 删除与远程仓库 name 的关联

打标签

    git tag # 列显已有的标签    git tag name [revision] # 给 revision 打一个轻量级标签。    git tag -a name [revision] -m "your comment" # 给 revision 打一个含附注的标签。     git tag -s name [revision] -m "your comment" # 给 revision 打一个含附注的标签,并用用 GPG 来签署标签。     git push origin [tagname] # 分享标签到远端仓库    git push origin --tags # 推送所有本地新增的标签到远端仓库

Git 命令别名

git 支持我们给命令起个别名。下面是一些例子。

    git config --global alias.co checkout    git config --global alias.br branch    git config --global alias.ci commit    git config --global alias.st status    git config --global alias.unstage 'reset HEAD --'    git config --global alias.last 'log -1 HEAD'    git config --global alias.visual '!gitk'
1 0
原创粉丝点击