在Windows上安装Git
下载链接http://msysgit.github.io/
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
打开git bash
pwd 查看当前目录
cd.. 切换到上一级目录
mkdir 新建文件夹
创建新的git仓库,切换到想要创建仓库的文件夹(注意付目录最好不要有中文)
$ git init
添加文件到Git仓库,分两步:
第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。($ git commit -m "这是注释")
$ git status
git status命令可以让我们时刻掌握仓库当前的状态,但如果想看看具体修改了什么内容
需要用$ git diff <file>这个命令查看。
$ git log
查看提交历史,以便通过提交的版本号回退到某个版本
$ git reflog
查看命令历史,以便确定要回到未来的哪个版本
$ git reset --hard HEAD^
回退到上一个版本
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
关于撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时(就是git add file过),想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
$ git rm test.txt
删除文件
rm 'test.txt'
$ git commit -m "remove test.txt"
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
第2步:登陆bitbucket,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
从远程仓库克隆
首先你要先有一个远程仓库,登录bitbucket创建一个远程仓库,然后用命令git clone克隆一个本地库
$ git clone git@bitbucket.org:登录名/仓库名.git(注意它会在你当前所在目录下创建,如果需要创建的到指定的文件夹需要自己切换目录)
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push origin master
SSH警告
当你第一次使用Git的clone或者push命令连接时,会得到一个警告:
The authenticity of host 'bitbucket.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
更新代码
$ git pull
关于分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
git branch
-r 列出远程分支
-a 所有all
-m | -M(强制) oldbranch newbranch 重命名分支
-d | -D branchname 删除分支
-d -r branchname 删除远程分支
远程:range
git remote 对远程仓库操作
列出已经存在的远程分支
-v | --verbose 列出详细信息,在每一个名字后面列出其远程url
git remote add [shortname] [url]添加远程仓库
git pull orign 下载
git push orign s
---------------------------------------------------------------------------------------------------------
git中的索引(index)是一个存放了排好序的路径的二进制文件(通常是.git/index)
每一个条目都附带有一个块对象的SHA1值以及访问权限
显示出索引的内容
git ls-files --stage
---------------------------------------------------------------------------------------------------------
git fetch 有四种基本用法
1. git fetch →→ 这将更新git remote 中所有的远程repo 所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
2. git fetch remote_repo →→ 这将更新名称为remote_repo 的远程repo上的所有branch的最新commit-id,将其记录。
3. git fetch remote_repo remote_branch_name →→ 这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name
4. git fetch remote_repo remote_branch_name:local_branch_name →→ 这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name ,并在本地创建local_branch_name 本地分支保存远端分支的所有数据。
FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
---------------------------------------------------------------------------------------------------------
git pull 的运行过程:
git pull : 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。
---------------------------------------------------------------------------------------------------------
在项目所在路径打开git bash
git status
git add . 从远程中加入缓存
git status
git commit -m'新增消息模块'
git log
git pull origin develop 仓库下载到本地
git add .
git commit -m'新增消息模块'
git push origin develop 本地上传到仓库
---------------------------------------------------------------------------------------------------------
git add -h
git add -u
git add -A
git add -i
git add . 当前目录
---------------------------------------------------------------------------------------------------------
git clone:
git clone 地址
cd volunteer-platform/
git checkout develop
(cd app/framework/是空的)
git submodule init
git submodule update
(cd app/framework/已经有值了)
(.gitignore可查看其内容)
---------------------------------------------------------------------------------------------------------
放弃对git管理的文件修改
git checkout bb.txt
git放弃对当前文件夹的所有文件的修改
git checkout .
对没有被git管理的文件修改
git reset --hard {版本号}
查看历史版本号
git log --stat
查看某个文件在某次提交中的修改:
git show <hashcode> <filename>
hashcode就是你想要查看的节点的哈希值,也就是commit后的一串代码
查看某个文件的包含提交人员,日期、版本号等记录信息,不包括修改详情
git whatchanged <filename>
---------------------------------------------------------------------------------------------------------
下载链接http://msysgit.github.io/
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
打开git bash
pwd 查看当前目录
cd.. 切换到上一级目录
mkdir 新建文件夹
创建新的git仓库,切换到想要创建仓库的文件夹(注意付目录最好不要有中文)
$ git init
添加文件到Git仓库,分两步:
第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。($ git commit -m "这是注释")
$ git status
git status命令可以让我们时刻掌握仓库当前的状态,但如果想看看具体修改了什么内容
需要用$ git diff <file>这个命令查看。
$ git log
查看提交历史,以便通过提交的版本号回退到某个版本
$ git reflog
查看命令历史,以便确定要回到未来的哪个版本
$ git reset --hard HEAD^
回退到上一个版本
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
关于撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时(就是git add file过),想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
$ git rm test.txt
删除文件
rm 'test.txt'
$ git commit -m "remove test.txt"
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
第2步:登陆bitbucket,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
从远程仓库克隆
首先你要先有一个远程仓库,登录bitbucket创建一个远程仓库,然后用命令git clone克隆一个本地库
$ git clone git@bitbucket.org:登录名/仓库名.git(注意它会在你当前所在目录下创建,如果需要创建的到指定的文件夹需要自己切换目录)
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push origin master
SSH警告
当你第一次使用Git的clone或者push命令连接时,会得到一个警告:
The authenticity of host 'bitbucket.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
更新代码
$ git pull
关于分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
git branch
-r 列出远程分支
-a 所有all
-m | -M(强制) oldbranch newbranch 重命名分支
-d | -D branchname 删除分支
-d -r branchname 删除远程分支
远程:range
git remote 对远程仓库操作
列出已经存在的远程分支
-v | --verbose 列出详细信息,在每一个名字后面列出其远程url
git remote add [shortname] [url]添加远程仓库
git pull orign 下载
git push orign s
---------------------------------------------------------------------------------------------------------
git中的索引(index)是一个存放了排好序的路径的二进制文件(通常是.git/index)
每一个条目都附带有一个块对象的SHA1值以及访问权限
显示出索引的内容
git ls-files --stage
---------------------------------------------------------------------------------------------------------
git fetch 有四种基本用法
1. git fetch →→ 这将更新git remote 中所有的远程repo 所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
2. git fetch remote_repo →→ 这将更新名称为remote_repo 的远程repo上的所有branch的最新commit-id,将其记录。
3. git fetch remote_repo remote_branch_name →→ 这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name
4. git fetch remote_repo remote_branch_name:local_branch_name →→ 这将这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name ,并在本地创建local_branch_name 本地分支保存远端分支的所有数据。
FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
---------------------------------------------------------------------------------------------------------
git pull 的运行过程:
git pull : 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。
---------------------------------------------------------------------------------------------------------
在项目所在路径打开git bash
git status
git add . 从远程中加入缓存
git status
git commit -m'新增消息模块'
git log
git pull origin develop 仓库下载到本地
git add .
git commit -m'新增消息模块'
git push origin develop 本地上传到仓库
---------------------------------------------------------------------------------------------------------
git add -h
git add -u
git add -A
git add -i
git add . 当前目录
---------------------------------------------------------------------------------------------------------
git clone:
git clone 地址
cd volunteer-platform/
git checkout develop
(cd app/framework/是空的)
git submodule init
git submodule update
(cd app/framework/已经有值了)
(.gitignore可查看其内容)
---------------------------------------------------------------------------------------------------------
放弃对git管理的文件修改
git checkout bb.txt
git放弃对当前文件夹的所有文件的修改
git checkout .
对没有被git管理的文件修改
git reset --hard {版本号}
查看历史版本号
git log --stat
查看某个文件在某次提交中的修改:
git show <hashcode> <filename>
hashcode就是你想要查看的节点的哈希值,也就是commit后的一串代码
查看某个文件的包含提交人员,日期、版本号等记录信息,不包括修改详情
git whatchanged <filename>
---------------------------------------------------------------------------------------------------------