Git Workflow: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| (10 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
Git Server set up on dbarchowsky.com. | Git Server set up on dbarchowsky.com. | ||
[http://netbeans.org/kb/docs/ide/git.html NetBeans Git User Guide] | |||
==Working with existing projects== | ==Working with existing projects== | ||
| Line 40: | Line 18: | ||
* Make a new Git branch | * Make a new Git branch | ||
: Naming convention: 'tm' + sequential number | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ git co -b mynewbranch | $ git co -b mynewbranch | ||
| Line 52: | Line 31: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ git add filename.ext | $ git add filename.ext | ||
</syntaxhighlight> | |||
* Stage a deleted file with | |||
<syntaxhighlight lang="bash"> | |||
$ git add -u filename.ext | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 88: | Line 72: | ||
$ # or | $ # or | ||
$ git push ssh://[uname]@[domain].com:[port]/refs/littledamien/littledamien_web master | $ git push ssh://[uname]@[domain].com:[port]/refs/littledamien/littledamien_web master | ||
$ # or (after creating an alias in .ssh/config) | |||
$ git push dbarchowsky:/refs/littledamien/littledamien_web | |||
</syntaxhighlight> | |||
==Deploying updates== | |||
===SFTP client=== | |||
* WS_FTPro with SFTP | |||
===Netbeans=== | |||
# Configure project to link it to SFTP connection. | |||
## Right click on project > Properties | |||
## Run Configuration > Remote Connection | |||
## Run As: Remote Web Site (FTP, SFTP) | |||
## Select existing connection, or make a new one. | |||
::* Host Name, Port Name, User Name, Password: self-evident | |||
::* Private Key File: [leave blank] | |||
::* Known Hosts File: ~/.ssh/known_hosts | |||
::* Initial Directory: /path/to/web_root | |||
# Select files within Netbeans project tree, right click > Upload | |||
==Creating a new repo out of an existing site== | |||
===Creating the Git repos=== | |||
* Navigate to the site's root directory. | |||
* Create a Git repository. | |||
<syntaxhighlight lang="bash"> | |||
$ git init | |||
</syntaxhighlight> | |||
* Make a .gitignore file (images, wordpress install files, etc.) | |||
: Copy from an existing web project and modify as necessary. | |||
* Set username and email (necessary for each repo) | |||
<syntaxhighlight lang="bash"> | |||
$ git config --global user.name "Damien Barchowsky" | |||
$ git config --global user.email "dbarchowsky@gmail.com" | |||
</syntaxhighlight> | |||
* Add existing files to Git repo, confirm the list of files, and commit the changes. | |||
<syntaxhighlight lang="bash"> | |||
$ git add . | |||
$ git status -s | |||
$ git commit -m "Initial version" | |||
</syntaxhighlight> | |||
* Clone the repo to 'origin' | |||
<syntaxhighlight lang="bash"> | |||
$ cd /n/git/base_dir | |||
$ git clone /m/base_dir/repo_dir | |||
</syntaxhighlight> | |||
===Configure SSH to allow Git to push to the production server with non-standard port number=== | |||
* [http://stackoverflow.com/questions/1558719/using-a-remote-repository-with-non-standard-port Stackoverflow: Using a remote repository with non-standard port] | |||
* Edit <code>.ssh/config</code> | |||
<syntaxhighlight lang="text"> | |||
Host sitealias | |||
HostName domainname.com | |||
Port 12345 | |||
User siteuser | |||
</syntaxhighlight> | |||
* then you should be able to use the basic syntax: | |||
<syntaxhighlight lang="text"> | |||
git push sitealias:/path/to/public_html master | |||
</syntaxhighlight> | |||
===Deploy a project using Git push=== | |||
'''Note:''' this is not available with shared hosting. Changes must be uploaded with FTP. Refer to [http://community.namecheap.com/forums/viewtopic.php?f=7&t=4275 this thread on the NameCheap forums]. | |||
[http://stackoverflow.com/questions/279169/deploy-a-project-using-git-push Stackoverflow: Deploy a project using Git push] | |||
1. Copy over your <code>.git</code> directory to your web server | |||
: Make sure to disallow access to any files within the <code>.git</code> directory! | |||
: Put an <code>.htaccess</code> file in the <code>.git</code> directory with | |||
:<syntaxhighlight lang="text"> | |||
deny from all | |||
</syntaxhighlight> | |||
2. On your local copy, modify your .git/config file and add your web server as a remote: | |||
<syntaxhighlight lang="text"> | |||
[remote "production"] | |||
url = username@webserver:/path/to/htdocs/.git | |||
</syntaxhighlight> | |||
3. On the server, replace .git/hooks/post-update with [http://littled.dbarchowsky.com/wiki/upload/post-update this file] | |||
4. Add execute access to the file (again, on the server): | |||
<syntaxhighlight lang="bash"> | |||
chmod +x .git/hooks/post-update | |||
</syntaxhighlight> | |||
5. Now, just locally push to your web server and it should automatically update the working copy: | |||
<syntaxhighlight lang="bash"> | |||
git push production | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Configuration== | ==Configuration== | ||
===Showing git settings=== | |||
Show all | |||
<syntaxhighlight lang="bash"> | |||
$ git config --list | |||
</syntaxhighlight> | |||
Show a specific setting | |||
<syntaxhighlight lang="bash"> | |||
$ git config user.name | |||
</syntaxhighlight> | |||
==='littledamienii' repo setup=== | |||
* Make sure the 'dev' drive is available while working with Git Bash on the current client. | * Make sure the 'dev' drive is available while working with Git Bash on the current client. | ||
<syntaxhighlight lang="dos"> | <syntaxhighlight lang="dos"> | ||
| Line 122: | Line 213: | ||
[[Category: | [[Category:Git]] [[Category:Web Development]] | ||
Latest revision as of 23:40, 23 April 2013
Overview[edit]
Git Server set up on dbarchowsky.com.
Working with existing projects[edit]
- Make sure the 'dev' drive is available on the current client. See Configuration
Using 'Git Bash' navigate to the project directory.
$ cd /m/littledamien/littledamien_web
- To see a list of previous commits (which should include the branch names as part of the commit message):
$ git log --oneline
- Make a new Git branch
- Naming convention: 'tm' + sequential number
$ git co -b mynewbranch
- Edit as necessary. Then verify changed files with
$ git status -s
- Add edits to commit with
$ git add filename.ext
- Stage a deleted file with
$ git add -u filename.ext
- Revert files with
$ git co HEAD filename.ext
- Verify edits with
$ git diff --cached $ git diff --cached filename.ext
- Commit the edits ('tm0001' being the branch name used to track projects)
# commit all edits $ git commit -m "tm0001: commit message" # switch to master branch $ git co master # merge edits into master branch $ git merge tm0001 # clean up branch $ git branch -d tm0001
- Then move the commits to the main repo:
$ cd /n/git/littledamien/littledamien_web $ git pull /m/littledamien/littledamien_web $ # or $ git push ssh://[uname]@[domain].com:[port]/refs/littledamien/littledamien_web $ # or $ git push ssh://[uname]@[domain].com:[port]/refs/littledamien/littledamien_web master $ # or (after creating an alias in .ssh/config) $ git push dbarchowsky:/refs/littledamien/littledamien_web
Deploying updates[edit]
SFTP client[edit]
- WS_FTPro with SFTP
Netbeans[edit]
- Configure project to link it to SFTP connection.
- Right click on project > Properties
- Run Configuration > Remote Connection
- Run As: Remote Web Site (FTP, SFTP)
- Select existing connection, or make a new one.
- Host Name, Port Name, User Name, Password: self-evident
- Private Key File: [leave blank]
- Known Hosts File: ~/.ssh/known_hosts
- Initial Directory: /path/to/web_root
- Select files within Netbeans project tree, right click > Upload
Creating a new repo out of an existing site[edit]
Creating the Git repos[edit]
- Navigate to the site's root directory.
- Create a Git repository.
$ git init
- Make a .gitignore file (images, wordpress install files, etc.)
- Copy from an existing web project and modify as necessary.
- Set username and email (necessary for each repo)
$ git config --global user.name "Damien Barchowsky" $ git config --global user.email "dbarchowsky@gmail.com"
- Add existing files to Git repo, confirm the list of files, and commit the changes.
$ git add . $ git status -s $ git commit -m "Initial version"
- Clone the repo to 'origin'
$ cd /n/git/base_dir $ git clone /m/base_dir/repo_dir
Configure SSH to allow Git to push to the production server with non-standard port number[edit]
- Stackoverflow: Using a remote repository with non-standard port
- Edit
.ssh/config
Host sitealias HostName domainname.com Port 12345 User siteuser
- then you should be able to use the basic syntax:
git push sitealias:/path/to/public_html master
Deploy a project using Git push[edit]
Note: this is not available with shared hosting. Changes must be uploaded with FTP. Refer to this thread on the NameCheap forums.
Stackoverflow: Deploy a project using Git push
1. Copy over your .git directory to your web server
- Make sure to disallow access to any files within the
.gitdirectory! - Put an
.htaccessfile in the.gitdirectory with deny from all
2. On your local copy, modify your .git/config file and add your web server as a remote:
[remote "production"]
url = username@webserver:/path/to/htdocs/.git
3. On the server, replace .git/hooks/post-update with this file
4. Add execute access to the file (again, on the server):
chmod +x .git/hooks/post-update
5. Now, just locally push to your web server and it should automatically update the working copy:
git push production
Configuration[edit]
Showing git settings[edit]
Show all
$ git config --list
Show a specific setting
$ git config user.name
'littledamienii' repo setup[edit]
- Make sure the 'dev' drive is available while working with Git Bash on the current client.
subst m: "\\littledamienii\develop" subst n: "\\littledamienii\shared"
- Physical origin repos located beneath
d:\shared\git - To make a new project:
d: cd \shared\git git clone ..\..\develop\path\to\project_root cd .\path\to\project_root git init rem <<< is that last 'git init' step necessary ??? >>>
- At least for now, when fetching & pulling vial ssh, the root directory is the Git install directory (
C:\Git).
- A symbolic link has been created between
C:\Gitdirectory and the Git base directory (D:\shared\git)
- A symbolic link has been created between
cd \Git mklink /d "refs" "d:\shared\git" rem symbolic link created for refs <<===>> d:\shared\git
- The symbolic link allows access to the git repo via
git clone|push|pull|etc. ssh://username@server/refs/path/to/myrepo